K-Means Clustering হলো একটি জনপ্রিয় অপ্রকাশিত শেখার (Unsupervised Learning) ক্লাস্টারিং অ্যালগরিদম, যা ডেটাকে একাধিক গ্রুপে বা ক্লাস্টারে ভাগ করে। এই অ্যালগরিদমটি বিষয়ভিত্তিক ডেটা বিশ্লেষণ বা প্যাটার্ন ডিটেকশন এ ব্যাপকভাবে ব্যবহৃত হয়, যেখানে ডেটা আগেই কোনো লেবেল (label) দেওয়া থাকে না এবং আমাদের উদ্দেশ্য হল ডেটার মধ্যে লুকানো গঠন বা সম্পর্ক খুঁজে বের করা।
K-Means Clustering এর মূল ধারণা:
K-Means অ্যালগরিদমটি একটি centroid-based ক্লাস্টারিং পদ্ধতি, যেখানে ক্লাস্টার কেন্দ্র বা centroid হিসাবে একটি মান নির্ধারণ করা হয় এবং তারপর ডেটার প্রতি পয়েন্টকে তার নিকটবর্তী ক্লাস্টারের centroid এর দিকে সমাবেশ করা হয়।
K-Means Clustering এর ধাপসমূহ:
- K নির্বাচন করা:
প্রথমে, আপনি কেমন সংখ্যক ক্লাস্টার চান তা নির্ধারণ করতে হবে, যা K-এর মান। যেমন, আপনি যদি ডেটাকে ৩টি গ্রুপে ভাগ করতে চান, তবে K=3 হবে। - Centroids নির্বাচন:
K সংখ্যক ক্লাস্টারের জন্য প্রাথমিকভাবে Kটি random centroid নির্বাচন করা হয়। - ডেটা পয়েন্ট ক্লাস্টারে ভাগ করা:
প্রতিটি ডেটা পয়েন্টকে তার নিকটবর্তী centroid এর ক্লাস্টারে অ্যাসাইন করা হয়। এটি Euclidean distance বা অন্য কোনো মেট্রিক্স ব্যবহার করে করা হয়। - Centroids আপডেট করা:
প্রতিটি ক্লাস্টারের জন্য নতুন centroid নির্ধারণ করা হয়, যা ক্লাস্টারের সমস্ত পয়েন্টের গড় মান হবে। এরপর, এই নতুন centroid এর মান আপডেট করা হয়। - পুনরাবৃত্তি (Iterate):
এই প্রক্রিয়াটি পুনরাবৃত্তি করা হয় যতক্ষণ না centroid গুলি কনভার্জ বা স্থির হয়ে যায়। অর্থাৎ, centroid আর পরিবর্তিত হয় না বা পরিবর্তনের হার খুব কম হয়ে যায়।
K-Means Algorithm এর ফর্মুলা:
K-Means অ্যালগরিদমে ক্লাস্টারিং করার জন্য একটি লক্ষ্য ফাংশন ব্যবহার করা হয় যা ইনপুট ডেটার জন্য ক্লাস্টারদের মধ্যে সর্বনিম্ন Within-cluster Sum of Squares (WCSS) তৈরি করতে সাহায্য করে।
এখানে:
- হল লক্ষ্য ফাংশন (Objective function), যা WCSS পরিমাপ করে।
- হল ক্লাস্টারের সংখ্যা (K ক্লাস্টার হবে)।
- হল একটি ডেটা পয়েন্ট।
- হল ক্লাস্টার এর মধ্যে থাকা পয়েন্টগুলি।
- হল ক্লাস্টার এর centroid।
এই ফাংশনটি লক্ষ্য রাখে যাতে ডেটা পয়েন্টগুলি তাদের নিজস্ব ক্লাস্টারের centroid এর কাছাকাছি থাকে।
K-Means Clustering এর উদাহরণ:
ধরা যাক, আমাদের কাছে একটি ডেটাসেট রয়েছে যা বিভিন্ন পণ্যের বিক্রয় এবং মূল্য সম্পর্কিত তথ্য ধারণ করে এবং আমরা এই পণ্যগুলিকে গ্রুপে ভাগ করতে চাই।
ধাপ ১: প্রথমে ডেটাসেট তৈরি করি:
| পণ্য | বিক্রয় | মূল্য |
|---|---|---|
| A | 200 | 50 |
| B | 220 | 55 |
| C | 230 | 60 |
| D | 100 | 30 |
| E | 120 | 35 |
| F | 130 | 40 |
ধাপ ২: আপনি যদি K=2 (দুটি ক্লাস্টার) নির্বাচন করেন, তাহলে K-Means অ্যালগরিদমটি দুটি গ্রুপে এই পণ্যগুলো ভাগ করবে।
- প্রথমে 2টি র্যান্ডম centroids নির্বাচন করা হবে।
- প্রতিটি ডেটা পয়েন্টকে সবচেয়ে কাছের centroid-এর ক্লাস্টারে অ্যাসাইন করা হবে।
- এরপর, নতুন centroid গুলি আপডেট করা হবে এবং এই প্রক্রিয়া পুনরাবৃত্তি করা হবে যতক্ষণ না centroid গুলি স্থির হয়ে যায়।
K-Means Clustering এর সুবিধা এবং সীমাবদ্ধতা
সুবিধা:
- সহজ এবং দ্রুত: K-Means অ্যালগরিদমটি সহজ এবং দ্রুত কাজ করে। এটি বড় ডেটাসেটের জন্য উপযুক্ত।
- ব্যবহারিক সুবিধা: এটি এমন সময়ে কার্যকর যেখানে আপনি পূর্বনির্ধারিত ক্লাস্টারের সংখ্যা জানেন।
- কম্পিউটেশনালভাবে কার্যকর: অন্যান্য ক্লাস্টারিং অ্যালগরিদমের তুলনায় এটি দ্রুত এবং কম্পিউটেশনালভাবে কার্যকর।
সীমাবদ্ধতা:
- K নির্বাচন: K এর মান কিভাবে নির্বাচন করবেন, এটি নির্ধারণ করা কঠিন হতে পারে। সাধারণত K এর জন্য উপযুক্ত মান নির্বাচন করতে Elbow Method বা Silhouette Analysis ব্যবহার করা হয়।
- প্রাথমিক Centroids: প্রাথমিক centroid গুলি র্যান্ডমভাবে নির্বাচন করা হয়, যার কারণে এটি বিভিন্ন রান-এ ভিন্ন ফলাফল দিতে পারে।
- অ্যাসুম্পশন: K-Means একটি গোলাকার ক্লাস্টারের অনুমান করে, যা আসল ডেটার জন্য সবসময় উপযুক্ত নাও হতে পারে। এটি জটিল বা অস্বাভাবিক আকারের ক্লাস্টারগুলির জন্য ভালো কাজ নাও করতে পারে।
K-Means এর উদাহরণ কোড (Python)
from sklearn.cluster import KMeans
import numpy as np
# উদাহরণ ডেটাসেট (বিক্রয় এবং মূল্য)
X = np.array([[200, 50], [220, 55], [230, 60], [100, 30], [120, 35], [130, 40]])
# K-Means মডেল তৈরি (K=2)
kmeans = KMeans(n_clusters=2, random_state=0)
kmeans.fit(X)
# ক্লাস্টার অ্যাসাইনমেন্ট
print("Cluster Centers:", kmeans.cluster_centers_)
print("Labels:", kmeans.labels_)
# নতুন ডেটার জন্য পূর্বাভাস
new_data = np.array([[180, 45], [150, 38]])
predictions = kmeans.predict(new_data)
print("Predictions for new data:", predictions)
এই কোডে, KMeans ক্লাস ব্যবহার করে আমরা 2টি ক্লাস্টার তৈরি করেছি এবং ডেটাকে সেই দুটি ক্লাস্টারে ভাগ করেছি।
সারাংশ:
K-Means Clustering একটি শক্তিশালী অপ্রকাশিত শেখার অ্যালগরিদম যা ডেটাকে নির্দিষ্ট সংখ্যক ক্লাস্টারে ভাগ করে। এটি খুবই সহজ, দ্রুত এবং কম্পিউটেশনালভাবে কার্যকর, তবে এটি কিছু সীমাবদ্ধতা যেমন প্রাথমিক centroid নির্বাচন এবং K এর মান নির্বাচন নিয়ে কাজ করে। K-Means প্রধানত নির্দেশক সম্পর্ক খুঁজে বের করার জন্য ব্যবহৃত হয়, যেমন ক্লাস্টারিং টাস্কে, যেখানে ইনপুট ডেটাতে কোনো পূর্বনির্ধারিত শ্রেণী নেই।
Read more